package appita.util;

import java.util.ArrayList;
import java.util.Random;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import appita.general.Lettera;
import appita.parser.Parser;

public class FunzioniEsercitazioni {
	private static FunzioniEsercitazioni _instance;
	
	private FunzioniEsercitazioni() {
	}

	public static FunzioniEsercitazioni getInstance() {

		if (_instance == null) {
			_instance = new FunzioniEsercitazioni();
		}
		return _instance;
	}

	//genera un  numero random compreso tra i valori low_gap e sup_gap
	public int numeroRandom(int low_gap, int sup_gap) {
		int rand = 0;
		int num1 = low_gap;
		int num2 = sup_gap;
		int min = Math.min(num1, num2);
		int delta = Math.abs(num1 - num2);
		Random random = new Random();
		for (int i = 0; i < 7; i++) {
			/*
			 * Random.nextInt(n) restituisce un numero intero tra 0 ed n
			 * sommando il valore minimo al valore ritornato dal metodo
			 * precedente, ottengo un numero casuale con limite inferiore
			 * diverso da 0.
			 */
			rand = random.nextInt(delta) + min;
		} // for
		return rand;
	}

	
	//restituisce il nome di una lettera dell' alfabeto scelta a caso
	public String pickLettera(JSONArray arrayCompleto, int rand)
			throws JSONException {
		JSONObject ob=null;
		ob = (JSONObject) arrayCompleto.get(rand);
		return ob.getString("lettera");
	}
	
	
	public String pickParola(int rand){
		return Lettera.getInstance().getNomiParole()[rand];
	}

	public boolean notPresente(ArrayList<String> nomi, String nome) {
			if(nomi.contains(nome)){
				return false;
			}
		return true;
	}
	
	
	public static void shuffle (ArrayList<String> array)
	{
	   Random rng = new Random();   // i.e., java.util.Random.
	   int n = array.size();        // The number of items left to shuffle (loop invariant).
	   while (n > 1)
	   {
	      int k = rng.nextInt(n);  // 0 <= k < n.
	      n--;                     // n is now the last pertinent index;
	      String temp = array.get(n);     // swap array[n] with array[k] (does nothing if k == n).
	      array.add(n,array.get(k));
	      array.add(k,temp);
	   }
	}
	
	
	
	
	
	
	

}
